home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / util / shell / axuucp_0_1.lha / axsh / rexx / rn-catchup.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1995-03-22  |  2.7 KB  |  105 lines

  1. /****** axuucp/rn-catchup ****************************************************
  2. *
  3. *   NAME
  4. *    rn-catchup - Mark all articles in subscribed groups as read
  5. *
  6. *   SYNOPSIS
  7. *    rx rn-catchup.rexx [user]
  8. *
  9. *   DESCRIPTION
  10. *    This script changes your ~/.rnnewsrc file marking all articles in 
  11. *    subsribed groups as read.
  12. *
  13. *   AUTHOR
  14. *    Tobias Ferber <tf@ganymed.hall.sub.org>
  15. *
  16. ******************************************************************************
  17. *
  18. */
  19.  
  20. user      = arg(1)
  21. newsrc    = axconfig("home") || user || "/.rnnewsrc"
  22. axnews    = axconfig("news")
  23.  
  24. /**/
  25.  
  26. if exists(newsrc'_') then address command 'delete quiet' newsrc'_'
  27.  
  28. call open('rc',newsrc)
  29.  
  30. do until eof('rc')
  31.   str= readln('rc')
  32.   if words(str) > 0 then do
  33.     parse var str lhs ' ' rhs
  34.     gflag= right(lhs,1)  /* ':' = subscribed, '!' = unsubscribed */
  35.     gname= left(lhs,length(lhs)-1)
  36.     gdir= axnews || translate(gname,'/','.')
  37.  
  38.     if gflag = ':' then do
  39.       gart=0 /* #of marked articles */
  40.  
  41.       call open('seq',gdir'/.lowest'); glowest= readln('seq'); call close('seq')
  42.       call open('seq',gdir'/.next'); gnext= readln('seq'); call close('seq')
  43.       /*say gname || gflag gnext-glowest 'article(s)'*/
  44.  
  45.       rhs="0"
  46.       if (gnext>0) & (gnext>glowest+1) then rhs= rhs'-'gnext-1
  47.       end
  48.     else say gname || gflag rhs '(ignored)'
  49.  
  50.     address command 'Echo >>' || newsrc'_' '"'gname || gflag rhs'"'
  51.     end
  52.   end
  53.  
  54. call close('rc')
  55. address command 'copy quiet' newsrc'_' newsrc
  56. address command 'delete quiet' newsrc'_'
  57. exit
  58.  
  59.  
  60. /*@<axconfig>*/
  61.  
  62. /* get an AXsh configuration value */
  63.  
  64. axconfig: procedure
  65.   tempfile = "T:axconfig." || pragma('Id')
  66.   rc_index  = "AXsh:rexx/rc.index"
  67.   var_val=""; var_file=""; var_defval="";
  68.  
  69.   parse upper arg var_name
  70.   if left(var_name,1) ~= '%' then var_name = '%'var_name
  71.   if right(var_name,1) ~= ':' then var_name = var_name':'
  72.  
  73.   if open('idx',rc_index,'Read') then do
  74.     do until (eof('idx') | (var_file~=''))
  75.       str= translate(readln('idx'),' ',d2c(9))
  76.       if words(str) > 0 then do
  77.         parse var str vname ' ' fname '"' defval '"'
  78.         if upper(vname) = var_name then do
  79.           var_file= strip(fname,'B',' 'd2c(9))
  80.           var_defval= defval
  81.           end
  82.         end
  83.       end
  84.     call close('idx')
  85.     end
  86.   else say 'Could not read "'rc_index'"'
  87.  
  88.   if words(var_file) > 0 then do
  89.     if open('rc',var_file,'Read') then do
  90.       do until (eof('rc') | (var_val~=''))
  91.         str= translate(readln('rc'),' ',d2c(9))
  92.         if upper(word(str,1)) = var_name then var_val = strip(readln('rc'),'B',' 'd2c(9))
  93.         end
  94.       call close('rc')
  95.       end
  96.     else say 'Could not examine "'var_file'" for' var_name
  97.     end
  98.   else do
  99.     if words(var_defval) > 0 then var_val= var_defval
  100.     else say 'No such config variable:' var_name
  101.     end
  102.  
  103.   return var_val
  104.  
  105.